package com.amado.designPattern.d03singleton;

import java.util.List;

//2、懒汉式，线程安全
//是否 Lazy 初始化：是
//是否多线程安全：是
//实现难度：易
//描述：这种方式具备很好的 lazy loading，能够在多线程中很好的工作，但是，效率很低，99% 情况下不需要同步。
//优点：第一次调用才初始化，避免内存浪费。
//缺点：必须加锁 synchronized 才能保证单例，但加锁会影响效率。
//getInstance() 的性能对应用程序不是很关键（该方法使用不太频繁）。
public class Singleton {
	/* 持有私有静态实例，防止被引用，此处赋值为null，目的是实现延迟加载 */
	private static Singleton instance = null;

	/* 私有构造方法，防止被实例化 */
	private Singleton() {
	}

	/* 静态工程方法，创建实例 */
	public static synchronized Singleton getInstance() {
		if (instance == null) {
			instance = new Singleton();
		}
		return instance;
	}
	
	public synchronized void print(List<String> content) {
		for(String str:content) {
			try {
				Thread.sleep(400);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println(str);
		}
	}
}
